<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from adt.tnf on 19 December 2010 -->

<TITLE>Abstract data types to be used in specifications - Bit Sets of Integer Size</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>Abstract data types to be used in specifications</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_3.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_5.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC4" HREF="adt_toc.html#SEC4">Bit Sets of Integer Size</A></H1>
<A NAME="IDX105"></A>
<P>
This C module implements sets of small
nonnegative integral values by values of an <CODE>unsigned</CODE> type
that is determined on instantiation of the module.
The maximal element value depends on the number of bits used for the
representation of the chosen <CODE>unsigned</CODE> type.
The operations provided by this module may be 
used for computations on kind set values (or any other
suitable application). In the following description of the set 
operations we assume that <CODE>el</CODE> stands for an expression that 
yields an integer being a set element, and <CODE>s, s1, s2</CODE> stand
for expressions yielding sets.
<P>
The module is instantiated by
<PRE>
   $/Adt/IntSet.gnrc +instance=NAME +referto=TYPE :inst
</PRE>
where <CODE>NAME</CODE> identifies the <CODE>IntSet</CODE> instance and <CODE>TYPE</CODE>
specifies the type used for representing set values.
If the <CODE>referto</CODE> parameter is specified to be <CODE>TYPE</CODE>, then
<CODE>unsigned TYPE</CODE> has to be a valid integral C type.
Examples for the <CODE>referto</CODE> parameter are <CODE>short</CODE>, <CODE>int</CODE>,
or <CODE>'long int'</CODE>. If the <CODE>referto</CODE> parameter is omitted
<CODE>int</CODE> is assumed. The <CODE>instance</CODE> parameter may be omitted
if there is only one instance of this module.
<P>
All entities exported by this module can be used in specifications
of type <CODE>.lido</CODE>, <CODE>.init</CODE>, <CODE>.finl</CODE>, and <CODE>.con</CODE>.
They can also be used in <CODE>.pdl</CODE> specifications or in C modules 
if the interface file <CODE>NAMEIntSet.h</CODE> is imported there.
<P>
The module exports the following type names and macros
(all names are prefixed by the value <CODE>NAME</CODE> of the <CODE>instance</CODE>
parameter):
<A NAME="IDX106"></A>
<A NAME="IDX107"></A>
<A NAME="IDX108"></A>
<P>
<DL COMPACT>
<DT><CODE>NAMEIntSet</CODE>
<DD>the type representing sets.
<P>
<DT><CODE>NAMENULLIS</CODE>
<DD>the unique value for an empty set.
<DT><CODE>NAMENullIS()</CODE>
<DD>a macro with no arguments for the unique value for an empty set,
to be used where a functional notation is required as in <CODE>WITH</CODE>
clauses of <CODE>CONSTITUENTS</CODE>.
</DL>
<P>
The following operations for set processing are supplied by the module.
It is indicated whether an operation is implemented by a function
or by a macro. The macros do not evaluate any argument repeatedly.
<A NAME="IDX109"></A>
<A NAME="IDX110"></A>
<A NAME="IDX111"></A>
<A NAME="IDX112"></A>
<A NAME="IDX113"></A>
<A NAME="IDX114"></A>
<A NAME="IDX115"></A>
<A NAME="IDX116"></A>
<A NAME="IDX117"></A>
<A NAME="IDX118"></A>
<A NAME="IDX119"></A>
<A NAME="IDX120"></A>
<P>
<DL COMPACT>
<DT><CODE>NAMEIntSet NAMESingleIS (int el)</CODE>
<DD>   Yields a singleton set containing <CODE>el</CODE>;
   a message is issued if <CODE>el</CODE> is not a valid element.
   (function)
<DT><CODE>NAMEIntSet NAMEAddElIS (int el, NAMEIntSet s)</CODE>
<DD>   Yields the union of <CODE>NAMESingleIS(el)</CODE> and <CODE>s</CODE>;
   a message is issued if <CODE>el</CODE> is not a valid element.
   (function)
<DT><CODE>NAMEIntSet NAMEConsIS (int el, NAMEIntSet s)</CODE>
<DD>   Yields the union of <CODE>NAMESingleIS(el)</CODE> and <CODE>s</CODE>;
   validity of <CODE>el</CODE> is not checked.
   (macro)
<DT><CODE>int NAMEInIS (int el, NAMEIntSet s)</CODE>
<DD>   Yields 1 iff <CODE>el</CODE> is in <CODE>s</CODE>;
   a message is issued if <CODE>el</CODE> is not a valid element.
   (function)
<DT><CODE>NAMEIntSet NAMEUniteIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields the union of <CODE>s1</CODE> and <CODE>s2</CODE>.
   (macro)
<DT><CODE>NAMEIntSet NAMESubIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields <CODE>s1</CODE> minus <CODE>s2</CODE>.
   (macro)
<DT><CODE>NAMEIntSet NAMEInterIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields the intersection of <CODE>s1</CODE> and <CODE>s2</CODE>.
   (macro)
<DT><CODE>int NAMEDisjIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields 1 iff <CODE>s1</CODE> and <CODE>s2</CODE> are disjoint.
   (macro)
<DT><CODE>int NAMEInclIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields 1 iff <CODE>s1</CODE> is a subset of <CODE>s2</CODE>.
   (function)
<DT><CODE>int NAMEEqualIS (NAMEIntSet s1, NAMEIntSet s2)</CODE>
<DD>   Yields 1 iff <CODE>s1</CODE> is equal to <CODE>s2</CODE>.
   (macro)
<DT><CODE>int NAMEEmptyIS (NAMEIntSet s)</CODE>
<DD>   Yields 1 iff <CODE>s</CODE> is empty.
   (macro)
<DT><CODE>int NAMECardIS (NAMEIntSet s)</CODE>
<DD>   Yields the number of elements in <CODE>s</CODE>.
   (function)
</DL>
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_3.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_5.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="adt_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
